package com.wyix.entity;

/**
 * 抽象用户类：封装所有用户的共性
 *
 * @author wangdx
 * @since 2025/8/1
 */
public abstract class AbstractUser {
    // 共性字段（具体状态）
    protected String userId; // 用户ID
    protected String name;   // 姓名
    protected boolean isOnline; // 是否在线

    // 构造器（供子类初始化共性字段）
    public AbstractUser(String userId, String name) {
        this.userId = userId;
        this.name = name;
        this.isOnline = false; // 初始离线
    }

    // 具体方法：登录（共性逻辑，所有用户登录流程相同）
    public void login() {
        if (isOnline) {
            System.out.println("用户[" + name + "]已在线，无需重复登录");
            return;
        }
        isOnline = true;
        System.out.println("用户[" + name + "]登录成功");
    }

    // 具体方法：登出（共性逻辑）
    public void logout() {
        if (!isOnline) {
            System.out.println("用户[" + name + "]已离线");
            return;
        }
        isOnline = false;
        System.out.println("用户[" + name + "]登出成功");
    }

    // 抽象方法：获取角色描述（留给子类实现个性化信息）
    public abstract String getRoleDesc();
}
